package com.zheinfo.biz.service.impl;

import com.zheinfo.biz.domain.Cart;
import com.zheinfo.biz.domain.Goods;
import com.zheinfo.biz.mapper.CartMapper;
import com.zheinfo.biz.service.ICartService;
import com.zheinfo.biz.service.IGoodsService;
import com.zheinfo.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 购物车Service业务层处理
 * 
 * @author zheinfo
 */
@Service
public class CartServiceImpl implements ICartService 
{
    @Autowired
    private CartMapper cartMapper;
    
    @Autowired
    private IGoodsService goodsService;

    /**
     * 查询购物车
     * 
     * @param id 购物车主键ID
     * @return 购物车
     */
    @Override
    public Cart selectCartById(Long id)
    {
        return cartMapper.selectCartById(id);
    }

    /**
     * 查询购物车列表
     * 
     * @param cart 购物车
     * @return 购物车
     */
    @Override
    public List<Cart> selectCartList(Cart cart)
    {
        List<Cart> cartList = cartMapper.selectCartList(cart);
        
        // 为每个购物车商品添加库存信息
        for (Cart c : cartList) {
            try {
                // 使用selectGoodsById方法直接获取商品信息
                Goods goodsInfo = goodsService.selectGoodsById(c.getGoodsId());
                
                if (goodsInfo != null) {
                    // 同步商品名称和价格，确保数据一致
                    c.setGoodsName(goodsInfo.getName());
                    c.setGoodsPrice(goodsInfo.getPrice());
                }
            } catch (Exception e) {
                // 异常处理，避免单个商品查询失败影响整个列表
            }
        }
        
        return cartList;
    }

    /**
     * 新增购物车
     * 
     * @param cart 购物车
     * @return 结果
     */
    @Override
    public int insertCart(Cart cart)
    {
        // 确保有创建时间
        cart.setCreateTime(DateUtils.getNowDate());
        
        // 如果没有提供商品图片，则从商品服务获取
        if (cart.getGoodsPicture() == null || cart.getGoodsPicture().trim().isEmpty()) {
            try {
                // 使用商品ID查询商品信息，获取图片
                Goods goodsInfo = goodsService.selectGoodsById(cart.getGoodsId());
                if (goodsInfo != null) {
                    // 设置商品图片
                    if (goodsInfo.getPicture() != null && !goodsInfo.getPicture().trim().isEmpty()) {
                        // 如果图片是逗号分隔的多个图片，取第一个
                        String[] images = goodsInfo.getPicture().split(",");
                        if (images.length > 0 && !images[0].trim().isEmpty()) {
                            cart.setGoodsPicture(images[0]);
                        }
                    }
                    
                    // 确保有商品名称和价格
                    if (cart.getGoodsName() == null || cart.getGoodsName().trim().isEmpty()) {
                        cart.setGoodsName(goodsInfo.getName());
                    }
                    if (cart.getGoodsPrice() == null) {
                        cart.setGoodsPrice(goodsInfo.getPrice());
                    }
                }
            } catch (Exception e) {
                // 记录异常但不影响主流程
                System.err.println("获取商品图片信息失败: " + e.getMessage());
            }
        }
        
        return cartMapper.insertCart(cart);
    }

    /**
     * 修改购物车
     * 
     * @param cart 购物车
     * @return 结果
     */
    @Override
    public int updateCart(Cart cart)
    {
        cart.setUpdateTime(DateUtils.getNowDate());
        return cartMapper.updateCart(cart);
    }

    /**
     * 批量删除购物车
     * 
     * @param ids 需要删除的购物车主键ID
     * @return 结果
     */
    @Override
    public int deleteCartByIds(Long[] ids)
    {
        return cartMapper.deleteCartByIds(ids);
    }

    /**
     * 删除购物车信息
     * 
     * @param id 购物车主键ID
     * @return 结果
     */
    @Override
    public int deleteCartById(Long id)
    {
        return cartMapper.deleteCartById(id);
    }
}